Skip to content

feat(landing): Astro 5 landing page with EN/FR i18n#12

Merged
thlaure merged 2 commits intomasterfrom
feat/landing-page
Apr 19, 2026
Merged

feat(landing): Astro 5 landing page with EN/FR i18n#12
thlaure merged 2 commits intomasterfrom
feat/landing-page

Conversation

@thlaure
Copy link
Copy Markdown
Owner

@thlaure thlaure commented Apr 19, 2026

What

  • Scaffold Astro 5 + Tailwind v4 static landing page in landing/
  • Add full EN/FR i18n using Astro built-in routing (/ = EN, /fr/ = FR)
  • Typed translations.ts covering all sections: nav, hero, features,
    pricing, social proof, waitlist, footer
  • Language switcher in the Nav (single link to the alternate locale)
  • <html lang=""> set dynamically per locale via BaseLayout

Why

Phase 2 of the roadmap — a public marketing + waitlist page for
Signalist before the app launches.

How

  • astro.config.mjs: i18n.prefixDefaultLocale: false so EN stays at
    / and FR at /fr/
  • src/i18n/translations.ts: as const object for both locales,
    exports Translations (union type) and Locale
  • All components receive t: Translations prop; icons/colors stay as
    presentation constants in each component
  • src/pages/index.astro + src/pages/fr/index.astro import the
    matching locale and pass t to every component

Verification

  • npm run build — 2 pages built cleanly (/index.html, /fr/index.html)
  • GrumPHP pre-commit hooks passed
  • CI landing job: npm ci && npm run build && npm audit --audit-level=high
  • No hardcoded strings left in components
  • No secrets or external calls introduced

Follow-up

  • Waitlist form backend integration (Brevo / internal API) — deferred
  • Open Graph images per locale
  • Vercel / hosting deployment config

🤖 Generated with Claude Code

Thomas Laure and others added 2 commits April 19, 2026 16:42
- Add landing/ as an independent Astro 5 + Tailwind v4 static project
- Nav: sticky header with logo, section links, waitlist CTA
- Hero: headline, subheadline, dual CTA, inbox preview mockup
- Features: four-step loop cards (Monitor/Curate/Synthesize/Publish)
- Pricing: three-tier table (Free / Team €29 / Enterprise)
- Social proof: three placeholder testimonials
- Waitlist: form UI with consent checkbox (service integration TBD)
- SEO: title, description, Open Graph, Twitter Card, canonical URL
- Responsive: mobile-first layout across all sections
- Update root .gitignore to exclude landing/node_modules, dist, .astro
- Add CI Landing job (npm ci + build + audit)
- Add make run-landing, landing-install, landing-build targets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add a typed translations file (translations.ts) covering all
landing page sections in English and French. Configure Astro
built-in i18n routing (prefixDefaultLocale: false) so EN
stays at / and FR lives at /fr/. Each component now receives
a t: Translations prop; a locale switcher in the Nav links
between the two versions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@thlaure thlaure merged commit 1c47af5 into master Apr 19, 2026
7 checks passed
@thlaure thlaure deleted the feat/landing-page branch April 19, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant